<?php

namespace App\Http\Requests\Api\User;

use App\Http\Utils\JUtil;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;

/**
 * 注册数据验证
 * Class UserRegisterPostRequest
 * @package App\Http\Requests\Api
 */
class UserRegisterPostRequest extends FormRequest
{

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        // 这里进行权限控制，如果不需要，返回true
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        // unique:user   对 user表进行唯一判断，这里相对的表名
        // username （字母开头 + 数字/字母/下划线）
        return [
            'username' => ['required','unique:user','max:20','min:6','regex:/^[A-Za-z][A-Za-z1-9_-]+$/'],
            'password' => 'required|max:20|min:6',
        ];
    }

    /**
     * 自定义错误信息
     * @return array
     */
    public function messages()
    {
        return [
            'username.required' => '用户名不能为空',
            'username.unique' => '用户名已经存在',
            'username.max'=> '用户名长度超过20位',
            'username.regex'=> '用户名格式异常',
            'username.min'=> '用户名长度低于6位',
            'password.required'=> '密码不能为空',
            'password.max'=> '密码长度超过20位',
            'password.min'=> '密码长度低于6位',
        ];
    }

    /**
     * 返回错误信息
     * @param Validator $validator
     */
    protected function failedValidation(Validator $validator)
    {
        $msg = $this->formatErrors($validator);
        JUtil::validationError($msg);
    }

    protected function formatErrors(Validator $validator)
    {
        return $validator->errors()->first();
    }


}
